

function Contruller(constructor:Function){
  // Person的构造器
  // console.log(constructor)
  constructor.prototype.age = 18;
  constructor.prototype.setName = function (){
    return '装饰器新增的方法'
  }
}

// 装饰类里面的方法  target  propertyKey
function Params(params){
  console.log(params)
  return function(target: Object, propertyKey: string | symbol){
    // Person的实例
    console.log(target)
    // 装饰的方法的名字
    console.log(propertyKey)
    // console.log(descriptor)
  }

}
// @Params
// function Post(params:string){

// }
// 装饰器 : 本质上是一个方法
// 作用 : 在不改变原有类或者方法的基础上 扩展一些功能
@Contruller 
class Person {
  name:string;
  age:number;
  setAge(){
    
  }
  @Params('id')
  request(){

  }
}

const person = new Person()
// person.setName()//?

// 装饰器
// 1. 装饰类 : 只有一个参数 类的构造
// 2. 装饰类里面的方法 : 两个参数  类的实例 装饰方法的名字
// nest 装饰器